Skip to content

HJ102 字符统计 ​

本节目标:理解“HJ102 字符统计”的核心思路,并能把它用于实际开发或面试表达。

说明:原 OneNote 中有图片引用,但图片未包含在导出目录中;本页保留了可用的文字与代码内容。 描述 输入一个只包含小写英文字母和数字的字符串,按照不同字符统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASCII码由小到大排序输出。 数据范围:

输入描述: 一个只包含小写英文字母和数字的字符串。 输出描述: 一个字符串,为不同字母出现次数的降序表示。若出现次数相同,则按ASCII码的升序输出。 示例1 输入: aaddccdc ==复制== 输出: cda ==复制== 说明: 样例里,c和d出现3次,a出现2次,但c的ASCII码比d小,所以先输出c,再输出d,最后输出a.

要解决这个问题,我们可以先统计字符串中每个字符出现的次数,然后根据字符出现的次数和ASCII码进行排序。

具体步骤如下:

  1. 使用字典统计每个字符出现的次数。
  2. 将统计结果转换为一个列表,其中每个元素是一个包含字符和其出现次数的元组。
  3. 对这个列表进行排序,先按出现次数降序排序,如果出现次数相同,则按字符的ASCII码升序排序。
  4. 根据排序后的列表构建最终的字符串。

输入字符串 ​

s = input()

使用字典统计每个字符出现的次数 ​

char_count = {} for char in s: if char in char_count: char_count[char] += 1 else: char_count[char] = 1

将统计结果转换为列表,每个元素是(字符, 出现次数)的元组 ​

count_list = list(char_count.items())

对列表进行排序,先按出现次数降序,再按ASCII码升序 ​

count_list.sort(key=lambda x: (-x[1], x[0]))

构建最终的字符串 ​

result = ''.join([item[0] for item in count_list])

输出结果 ​

print(result)

这段代码首先通过遍历输入的字符串input()来统计每个字符出现的次数,并将结果存储在char_count字典中。然后,它将字典转换为包含(字符, 出现次数)元组的列表,并对这个列表进行排序。排序时,首先按出现次数降序(使用-x[1]实现),如果出现次数相同,则按字符的ASCII码升序(直接使用x[0])。最后,使用列表推导和join方法构建出最终的字符串,并输出。

input_str = input().strip() count_map = {} for s in input_str: if s in count_map: count_map[s] += 1 else: count_map[s] = 1 new_list = sorted(count_map.items(), key=lambda x: (-x[1], x[0])) print(''.join([i[0] for i in new_list]))

本站总访问 — 次